package leecode

func lengthOfLongestSubstring(s string) int {
	dictMap := make(map[byte]int) //存储字母对应的最新下标
	ans := 0
	left := -1
	for right, _ := range s {
		//如果下标重新出现
		if val, ok := dictMap[s[right]]; ok {
			//更新左指针 左指针记录次下标出现的最后位置
			left = max(left, val)
		}
		//更新hash表中的下标
		dictMap[s[right]] = right
		ans = max(ans, right-left)
	}
	return ans
}
